Relações inversas no esquema de dados do IFC

Aprender uma outra língua é sempre um grande desafio, principalmente porque exige experiência e prática, e isso não é diferente com a tecnologia da informação. E não tem como não esbarrar nisso quando se está inserido no mundo do BIM, já que se trata, justamente, de modelagem da informação da construção. Muitos se enganam quando pensam que as únicas linguagens utilizadas em TI são as de programação. Existem as metalinguagens, linguagens para modelar metadados (dados sobre dados). Estas linguagens estabelecem um esquema (SCHEMA) de dados, atribuindo um padrão de formatação, relacionamentos e restrições para os dados armazenados segundo uma padronização proposta.

No caso do IFC, formato estabelecido pela Buldingsmart como um formato padrão aberto e normatizado pela ISO 16739, a linguagem utilizada para estabelecer um esquema de dados é a EXPRESS (ISO 10303-11).

Um modelo de dados em EXPRESS pode ser definido de duas maneiras, textualmente e graficamente. A descrição formal é feita de forma textual, em arquivos no formato ASCII, geralmente aceita por ferramentas computacionais e possui todas as informações necessárias para estabelecer o formato e as relações entre os dados. A representação gráfica, por sua vez, é mais intuitiva, de fácil entendimento e por isso utilizada em apresentações e tutoriais. A forma gráfica, conhecida como EXPRESS-G, não é capaz de representar todos os detalhes que podem ser formulados na forma textual. Com a linguagem EXPRESS é possível descrever um esquema de dados com toda a sua estrutura, relacionamentos e regras de restrições.

Quando entramos na página da Buildingsmart e procuramos saber qual o esquema de representação de um elemento, nos assustamos diante de um gráfico escrito nesta linguagem.

A primeira vez que eu vi, me senti como o personagem ‘Neo’ do filme ‘Matrix’, olhando para ela na primeira vez! Era difícil acreditar que alguém olhando aqueles simbolos gráficos pudesse entender alguma coisa. Mas assim que você entende a sintaxe da linguagem, e depois de alguma prática, não parece ser tão difícil! E não se enganem, o segredo para entender um arquivo no formato IFC não é entender o formato STEP, no qual ele é codificado, mas entender o seu esquema na linguagem EXPRESS!

Relações inversas

EXPRESS é completamente orientado a objetos, isso significa que os dados são agrupados e classificados em classes de objetos, que possuem atributos e funções específicas. Estas classes podem possuir subclasses que herdam seus atributos e formam uma espécie de especialização da superclasse. No EXPRESS, estas classes são descritas pela palavra reservada ENTITY e subclasses e superclasses são chamadas de SUBTYPES e SUPERTYPES, respectivamente. Mas esta não é a única relação que estes objetos podem ter entre si. Vários tipos de relações podem ser estabelecidas, como um elemento pertence a um tipo, ou um elemento possui um material, o que também é um objeto que representa uma classe. Para exemplificar, tome a relação de abertura que uma parede pode ter:

o objeto da classe IfcWall pode possuir um abertura, que é um objeto da classe IfcOpeningElement. Este, por sua vez, pode ser ocupado por uma janela, um objeto da classe IfcWindow.

Estas relações também são representadas por objetos de classes específicas, como mostra a figura acima, o objeto da classe IfcRefVoidsElement representando a relação de abertura e o objeto da classe IfcRefFillsElement, a relação de preenchimento desta abertura. Estes dois objetos relacionam a parede e a janela, através de atributos, mas notem que os objetos parede e janela não se relacionam diretamente. Necessitam de um objeto para promover esta relação. Isto é necessário por conta da semântica destes relacionamentos e da possível cardinalidade entre eles. Mas o fato é que se você pegar a representação desta parede no arquivo IFC, você não vai ver nenhuma menção ao objeto janela.

O objeto da classe IfcRefVoidsElement relaciona a parede, da classe IfcWall, com o objeto da classe IfcOpeningElement (abertura) através de dois atributos: relatingBuildingElement e relatingOpeningElement, e se você procurar por este objeto, aí sim, você vai ver como valor destes atributos, os objetos que se relacionam.

Existe uma relação inversa do objeto parede com o objeto abertura, representado no esquema gráfico pelo atributo hasOpening, e voidsElement que não aparecem no arquivo do modelo, mas está implícito no esquema da classe parede. Embora esta relação não seja apresentada no arquivo IFC, ela aparece somente no esquema da classe IfcWall, tornando mais fácil o entendimento que não teríamos apenas analisando o arquivo no formato STEP.

De volta à Matrix

A estrutura de um arquivo IFC, bem como as suas relações entre os objetos são bem mais complexas que isto. A ideia aqui foi apresentar somente um aspecto da relação de uma classe específica, e mostrar como é importante o estudo do esquema dos dados. Muitos que querem entender o padrão IFC se debruçam direto na sintaxe do arquivo em formato STEP, o que não só desmotiva o aprendizado, mas o torna bem mais difícil. O segredo é entender o esquema, na linguagem EXPRESS e seu diagrama em EXPRESS-G. Esta é a pílula vermelha, fazendo novamente uma analogia ao filme ‘Matrix‘.

Então, para aqueles que desejam se aventurar no mundo do openBIM, é hora de acordar Neo, e seguir o coelho branco…